Background

This is the flow cytometry data for miglog phase Cg stained with PI/PI+SYTO9/ SYTO+PI in different staining orders, and run through flow cytometry (details in ELN). The goal is to establish FungaLight’s distinguishing power with different staining protocols.

require(tidyverse)
require(flowCore)
require(flowClust)
require(openCyto)
require(ggcyto)
require(cowplot)
require(ggridges)
old <- theme_set(theme_minimal())

Import data

FCS files are stored in RDSS/user/flow cytometry, FCS is read and write into an input tsv table. The tsv file is avaliable from the Input folder.

# use relative path to make it easier for collaboration
data.path = "/Volumes/rdss_bhe2/User/Hanxi Tang/Flow Cytometry/20240109_0116 Dye order/"
dat0 <- read.flowSet(path = data.path, transformation = FALSE,  # the original values are already linearized. 
                     emptyValue = FALSE,  alter.names = TRUE,   # change parameter names to R format
                     column.pattern = ".H|FSC|SSC") # only load the height variables for the fluorescent parameters

Simplify the sample names

#require(PTXQC)
#source("../script/20220326-simplify-names-subroutine.R")
oriNames <- sampleNames(dat0)
tmp <- str_split(oriNames, pattern = "[ _]+", simplify = TRUE)[,c(1, 6, 7)]
colnames(tmp) <- c("Date", "Treatment", "Dye")
sample <- data.frame(tmp) %>% 
  mutate(
    Dye = case_match(
      Dye,
      "p.fcs" ~ "PI alone",
      "pf.fcs" ~ "PI first",
      "sf.fcs" ~ "SYTO9+PI",
      .default = NA
    )
  )
rownames(sample) <- oriNames
pData(dat0) <- sample
dat <- dat0[!is.na(sample$Dye)]
print(pData(dat) %>% as_tibble())
write_tsv(pData(dat), file = "../data/12.01-sample-list-20240117.tsv")

Basic gating

Outlier

The following gaphing steps are used to gate singlets by FSC and SSC values. Only singlets are included in analysis.

outlier.gate <- rectangleGate(filterId = "-outlier", "FSC.H" = c(1.2e5, 1e6), "SSC.H" = c(1e2, 1e6))
ggcyto(dat[c(2,20)], aes(x = FSC.H, y = SSC.H), subset = "root") +
  geom_hex(bins = 64) + geom_gate(outlier.gate) + facet_wrap(~name, ncol = 2) + ggcyto_par_set(limits = "instrument")
Coordinate system already present. Adding new coordinate system, which
will replace the existing one.

Add gate to GS

# shorten the names of the samples for plotting
shortNames <- with(pData(dat), 
                   paste(substr(Date, 1, 4), paste0(Treatment, " mM")
                         , Dye, sep = "_"))
names(shortNames) <- sampleNames(dat)
gs <- GatingSet(dat) # create a GatingSet
# rename the GatingSet
if(all(sampleNames(gs) == names(shortNames)))
  pData(gs)$name <- shortNames
# repair the Date column in pData
pData(gs)$Date = paste0("0", pData(gs)$Date)
# add the outlier gate
gs_pop_add(gs, outlier.gate, parent = "root")
[1] 2
# compute
recompute(gs)
done!

Gate for singlets

scPars <- ggcyto_par_set(limits = list(x = c(0,1e6), y = c(30,300)))
ex <- Subset(dat[[1]], outlier.gate)
polygon <- matrix(c(1e5, 1e5, 1e6, 1e6, 
                    60, 105, 135,60), ncol = 2)
colnames(polygon) <- c("FSC.H", "FSC.W")
singlet.gate <- polygonGate(filterId = "singlet", .gate = polygon)
ggcyto(ex, aes(x = FSC.H, y = FSC.W)) + geom_hex(bins = 128) + geom_gate(singlet.gate) + geom_stats() + scPars
Coordinate system already present. Adding new coordinate system, which
will replace the existing one.

Add this gate to the gatingSet

gs_pop_add(gs, singlet.gate, parent = "-outlier", name = "singlet")
[1] 3
recompute(gs)
done!
scPars <- ggcyto_par_set(limits = list(x = c(0,1e6), y = c(30,200)))
test <- sample(1:length(gs), 8)
ggcyto(gs[test], aes(x = FSC.H, y = FSC.W), subset = "-outlier") +
  geom_hex(bins = 128) + geom_gate("singlet") + facet_wrap(~name, ncol = 4) + 
  scPars# + theme(strip.text = element_blank())
Coordinate system already present. Adding new coordinate system, which
will replace the existing one.

FSC and SSC vs treatment and dye

FSC

mult_format <- function() {
     function(x) format(x/10000,digits = 2) 
}
for(date in c("011124", "011524", "011624")){
  p <- ggcyto(gs[pData(gs)$Date == date], aes(x = FSC.H), subset = "singlet") + 
    geom_density_ridges(aes(y = Treatment), fill = "forestgreen", alpha = 0.8) + 
    scale_x_continuous(labels = mult_format(), name = "FSC.H x 10000") +
    facet_wrap(~Dye) + labs(title = paste0("Date: ", date))
  print(p)
}

Mock treated sample stands out - the three H2O2 treated samples show a trend of decreasing FSC with increasing ROS Mock has a FSC in between 10 and 100 mM

FSC vs BL1.H (green staining)

for(date in c("011124", "011524", "011624")){
  p <- ggcyto(gs[pData(gs)$Date == date], aes(x = BL1.H, y = FSC.H), subset = "singlet") + 
    geom_hex(bins = 128) + 
    #geom_gate(live.gate) + 
    #geom_stats(location = "data", adjust = c(0.1, 0.8), digits = 2) + 
    labs(title = paste0("Date: ", date)) +
    facet_grid(Dye ~ Treatment) +
    scale_x_logicle() + #scale_y_logicle() + 
    theme(strip.text = element_text(size = rel(1.1), color = "steelblue", face = 2))
  print(p)
}

SSC

for(date in c("011124", "011524", "011624")){
  p <- ggcyto(gs[pData(gs)$Date == date], aes(x = SSC.H), subset = "singlet") + 
    geom_density_ridges(aes(y = Treatment), fill = "forestgreen", alpha = 0.8) + 
    scale_x_continuous(labels = mult_format(), name = "FSC.H x 10000") +
    facet_wrap(~Dye) + labs(title = paste0("Date: ", date))
  print(p)
}

SSC (complexity of cell, roughly) decreases with increasing H2O2 concentration Mock again show a different pattern.

Gate for scoring

Live = red negative

This is the live population with red fluorescence below 10^2.2

Important: I changed the Red top boundary to 10^2.3 from 10^2.2

Main takeaway

  1. From 10mM to 1M treated samples, %live decreases and the change is much more obvious in the dual stain (PI first or simultaneous) than PI alone

  2. The mock treated sample has a visible high red high green (not as high and prominent as the 100 mM treated) than 10 mM treated. It doesn’t follow the trend above.

#scPars <- ggcyto_par_set(limits = list(x = c(0,1e6), y = c(0,1e5)))
polygon <- matrix(c(0, 10^5, 10^5, 0,
                    10^2.3, 10^2.3, 0, 0), ncol = 2)
colnames(polygon) <- c("BL1.H", "BL3.H")
live.gate <- polygonGate(filterId = "live", .gate = polygon)
for(date in c("011124", "011524", "011624")){
  p <- ggcyto(gs[pData(gs)$Date == date], aes(x = BL1.H, y = BL3.H), subset = "singlet") + 
    geom_hex(bins = 128) + 
    geom_gate(live.gate) + 
    geom_stats(location = "data", adjust = c(0.1, 0.8), digits = 2) + 
    labs(title = paste0("Date: ", date)) +
    facet_grid(Dye ~ Treatment) +
    scale_x_logicle() + scale_y_logicle() + 
    theme(strip.text = element_text(size = rel(1.1), color = "steelblue", face = 2))
  print(p)
}

Notice the higher percentage of events in the live gate in 10 mM vs mock.

Add this gate to the gatingSet

Intermediate = high G/R

This is the intermediate population with high Red and Green. We hypothesize that they represent the

Important: I changed the bottom boundary from 10^2.2 to 10^2.3, and the left boundary from 10^3 to 2*10^3

Main takeaway

  1. Different from the %live gate, the intermediate population is most obvious in the 100 mM treated sample, and absent in both the 10 mM and 1M treated ones. This suggests that this population could be useful for distinguishing stress levels below the lethal concentration but above the tolerance levels of the species - in this case, < 1M and > 10 mM.

  2. The mock treated sample showed an intermediate population. Was unexpected.

#scPars <- ggcyto_par_set(limits = list(x = c(0,1e6), y = c(0,1e6)))
#ex <- Subset(dat.f1g[[9]], singlet.gate)
polygon <- matrix(c(10^5, 2*10^3, 10^5,
                    10^2.3, 10^2.3, 10^4), ncol = 2)
colnames(polygon) <- c("BL1.H", "BL3.H")
inter.gate <- polygonGate(filterId = "inter", .gate = polygon)
for(date in c("011124", "011524", "011624")){
  p <- ggcyto(gs[pData(gs)$Date == date], aes(x = BL1.H, y = BL3.H), subset = "singlet") + 
    geom_hex(bins = 128) + 
    geom_gate(inter.gate) + 
    geom_stats(location = "data",  adjust = c(0.1, 0.8), digits = 2) + 
    labs(title = paste0("Date: ", date)) +
    facet_grid(Dye ~ Treatment) +
    scale_x_logicle() + scale_y_logicle() + 
    theme(strip.text = element_text(size = rel(1.1), color = "steelblue", face = 2))
  print(p)
}

Add this gate to the gatingSet

Dead = High red low green

We don’t need to set the dead gate because all we want is the percent of events in that gate, not the MFI for either channel. The percentage can be calculated by subtracting the percent of events in the previous two gates from 100%.

Reproducibility

Here, we plot the PI first staining from multiple days to see their consistency

treatment <- c("0" = "mock", "10" = "10 mM", "100" = "100 mM", "1000" = "1 M")
p <- ggcyto(gs[pData(gs)$Dye == "PI first" & pData(gs)$Treatment != 0 & pData(gs)$Date != "011624"], 
            aes(x = BL1.H, y = BL3.H), subset = "singlet") + 
  geom_hex(bins = 128) + 
  facet_grid(Date ~ Treatment, labeller = labeller(Treatment = treatment)) +
  scale_x_logicle(breaks = c(10^2, 10^3, 10^4)) + 
  scale_y_logicle(breaks = c(10^2, 10^3, 10^4)) + 
  theme_minimal(base_size = 16) + 
  panel_border(color = "gray20") + #background_grid(major = "none", minor = "none") +
  theme(
    #axis.line = element_blank(),
    strip.text.y = element_blank(),
    strip.text.x = element_text(size = rel(1.2), color = "steelblue", face = 2),
    axis.text = element_text(size = rel(0.6)),
    plot.title = element_blank(),
    legend.position = "none",
    axis.title = element_blank()
  )
p
ggsave("../output/20240323-for-R35-fungalight-reproducibility.png", width = 4, height = 3)

Exported gate stats

% of events in each of the three gates

```r
gated_stats <- gs_pop_get_stats(gs, type = \count\) %>% 
  as_tibble() %>% 
  mutate(pop = gsub(\.*/\, \\, pop), pop = gsub(\-outlier\, \cells\, pop)) %>% 
  pivot_wider(names_from = pop, names_prefix = \n_\, values_from = count) %>% 
  mutate(
    #p_singlet = n_singlet / n_cells,
    p_live = n_live / n_singlet,
    p_intermediate = n_intermediate / n_singlet,
    p_dead = 1 - p_live - p_intermediate
  )
#write_tsv(gated_data, file = \../Input/20240124-fig-2-Dye-Order-gated-ht.tsv\)
#print(gated_data)

<!-- rnb-source-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


MFI in the live and intermediate gates

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxucG9wTUZJIDwtIGdzX3BvcF9nZXRfc3RhdHMoZ3MsIG5vZGVzID0gYyhcXGxpdmVcXCwgXFxpbnRlcm1lZGlhdGVcXCksIHR5cGUgPSBwb3AuTUZJKSAlPiUgXG4gIGFzX3RpYmJsZSgpICU+JSBcbiAgc2VsZWN0KHNhbXBsZSwgcG9wLCBGU0MgPSBgRlNDLUhgLCBCTDEgPSBgRnVuZ2FsaWdodCBHcmVlbi1IYCkgJT4lIFxuICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gcG9wLCB2YWx1ZXNfZnJvbSA9IGMoRlNDLCBCTDEpKVxuYGBgXG5gYGAifQ== -->

```r
```r
popMFI <- gs_pop_get_stats(gs, nodes = c(\live\, \intermediate\), type = pop.MFI) %>% 
  as_tibble() %>% 
  select(sample, pop, FSC = `FSC-H`, BL1 = `Fungalight Green-H`) %>% 
  pivot_wider(names_from = pop, values_from = c(FSC, BL1))

<!-- rnb-source-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


Combine the data and meta data

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZmluYWwgPC0gc2VsZWN0KHBEYXRhKGRhdCksIHNhbXBsZSA9IG5hbWUsIGV2ZXJ5dGhpbmcoKSkgJT4lIFxuICBsZWZ0X2pvaW4oc2VsZWN0KGdhdGVkX3N0YXRzLCAtc3RhcnRzX3dpdGgoXFxuX1xcKSksICBieSA9IFxcc2FtcGxlXFwpICU+JSBcbiAgbGVmdF9qb2luKHBvcE1GSSwgYnkgPSBcXHNhbXBsZVxcKVxuXG53cml0ZV90c3YoZmluYWwsIGZpbGUgPSBcXC4uL2RhdGEvMTIuMDEtZ2F0ZWQtb3V0cHV0LTIwMjQwMTE3LnRzdlxcKVxucHJpbnQoZmluYWwgJT4lIHNlbGVjdCgtc2FtcGxlKSlcbmBgYFxuYGBgIn0= -->

```r
```r
final <- select(pData(dat), sample = name, everything()) %>% 
  left_join(select(gated_stats, -starts_with(\n_\)),  by = \sample\) %>% 
  left_join(popMFI, by = \sample\)

write_tsv(final, file = \../data/12.01-gated-output-20240117.tsv\)
print(final %>% select(-sample))

<!-- rnb-source-end -->

<!-- rnb-frame-begin eyJtZXRhZGF0YSI6eyJjbGFzc2VzIjoiZGF0YS5mcmFtZSIsIm5yb3ciOjM2LCJuY29sIjoxMCwic3VtbWFyeSI6eyJEZXNjcmlwdGlvbiI6ImRmIFszNiDDlyAxMF0ifX0sInJkZiI6Ikg0c0lBQUFBQUFBQUErMlhlVkFUVnh6SGw4dENsSXFDUWdTQlZvd25ORUhFQy90TEVFRXRhcmphMEZJaGtvQ0JrRUNJb0NnSTFRRTdha0ZBQkU4VUJhb01vRVhCMWlNZUtGRTVQRVpSMU9LRkZ5UzBvNmdGc2NtKzNTM0x0UGJmT2pVem1jLzdmZC8zOTl2M2Zydkp2UFgzRWt4aUNCZ1loaGxoeGthR21KR0pib2laQkFWNk8wL0ZNR05EWFdDQUdXTm1laTdUbVN4MUE3M2JRdmQxSWlZR3NEa2NqcXZiZXhGTmZrOGk5LzkwUkwvL0J1eC9IQmh5M2pVeTRyRGZQVFRXRGY5dC9QKzhPdjBPbVBMbk9ncWxjcG00VHh3aFVjUXJ5VGdnT0hEaHRBbjh1Ui84SC93MFA0WjlySCtPUUt0T05FMnBqSURIVjl1SzFWOCtoUGFhQ3g1ampDZUN0cnloKzBSK0RHaWMzWjZxT1JtZzhRMTlmc2FoQjdRYlp5NTZ4b3lCQitFTFFvK3Vra05MejYzcEo5K3NoWUF6OWN6R1ovWGdxWndUSEhTNUFIaUIzNy81YmR3VTBMYUhTb1luQytBK3RxeHp4eTlOMERaMjMraDFVYWFnM2JuREo2L0JBenFDTTk0MHN3eWh3M1B6Vi81RDdvTzJqUFh3V01OT3VKTmJmeXllK1JpdUcwVXZYejIxQkJhRjlKeTFQODRDOTMzbDNaMGJWNFBIK3Ntdmh6TTBvTlZ5elE2bU9VQkhScU5md3Q1bWVMSTFxamQ0WFNSbzF6cjZkazExQnMwV2xWbmJ3Q0RRTEpyajEzRWtDN1RmZkp1Uy9PSXdYRm8yTU1xdFl6OWN0SXdMNHQvYkF3RURieWVsYk93RzdoZ3pMTHI4RWN4bWJPMzYzYzJiN0JOR2ZPQ0NyOFB0TzN3TjFBVGZuR0pTRlVucHBkS1FsanJXZWRnYjBmQzBNdmtXcFY5anBNenNjVDhHZDFkM1cyaDIvRURwNDY5WG1PZmFtb1BiaGViemdadGJLUDNHcGhrNWQxeXQ0RXEwenpCMVV6bWxWMzZSZWNPMXpBa092TnhWVmZIMWVFcHZIU1NhTkxoNE5qd1l5V3ArVzdJTTYvZUJ6MnBtdlBJVEpsSHh3Yk9lRldIVkwwQTltaXZaenBwTzZadWJqMC91dWhVSWhZY2JSbW5FbHltOUxUWHFTdHp4U25nOEw3RFFzbUFScGR0VlQxU2tyNThOazZRODF4bzJqM3FlVm5pdFVKWFVZNUJ1TEpEWFRtbUY1SjdqS3o4dHlvSTF2andMNWdNVnJEYnd1NU5qWkFNWnZ1ZWMzTTJ5WUYxbDZleHBlMVNRcmVHUExTdm1RNmE0U21xelB4VzBYU01MNG0wWW9IMTlTUEhxMGx3ZGh5eU9uRFlLd2d2em5ueFhpa0dTY3ZlUllUa1l4TjRZYys1YVV5cXN0WkdOOEkzRElLZFExY3JPWkVQbWRydDA3RkFuck9ueXpsb3Y0TUltMXZhek4vSmJZZTJjbTVrVjVoaG9PeStsYmV2Y0JkbzM0L2M1cHVtZW96OFVMOUlFNHlEc1JOZjhsTHNZeUpjSXRzOGFGd2JSWG85Z0FpTVZOcnhzUHhYM1hBVzVqZHdOUGtjR1FiWTZPRWxxR0FLNXVYdzJieTRYOHVNMG11VUx1WkRIdkJ0Z2NzSlJ0LzZrSVo2cWF0QjJXNndKNGJlQzl0WENwcGIyR0xKUFBPWkMvZjg0eG1PeTdIRGExSHJqZEJoVWc5UGUxZ2JGemsvUnZKc0twL1hrbTRpUWkzTm8wWE9jdzB4UUhkTjd5TWVjS0VMazNFUDU4OTFRM2Z0SGNZN1U3RWJrbDZINVdlMDRoODlaaWZnaldvZVZzU05PaTZMMXFKNEUrWmxEQlNnUDBEcXR5NmZpdERYWWhoaCtFWEhZUkZUdnZCVFZtNUdQV0dlRmVCdlZNMThTaTY3emt2enQ0SDFhOVFvRnZCRTdQTkI2RS9mb1NlbE9DZTZJdmZOb3VtMmRQY3JMOXFEcGxoWm8zNWJkUDlOMG0rZDh0SytnTUhyOTAvaHZqVGRLTllLbU13MnNpUDRLK3VyVXZIVnhENzErSXVxcmRYSUVUZjhrendXblkzVWdQYjhBOWNPNmdVWFRoOVNpZlZuYnVmYnRFOWVmaXdmY3dsS0N3eEVEQ0gzM2JzUmRUWWgrS3NKbmk3anBLdUZIUmJrbGh4R3pwWWoraEY3WVFkUlJFUDVVb240dllwRTl2WDVCSlZFL2k2aEQ2RnVYSU83OW5PN1BXNG1ZLzREd0UvVzNoQkNzby90M3RTRnVJM3g4WXIveHhQWFNpTWIxZTU2NEp4TVJqd1hoaVpUK2t5bkJCUmhOUDVXT2VJNU4xMDhlUUt5VjB2VmFOYjRRN2huamZ2WGZJbFpsOS9PZnczMWNkU2xOcCticmZxWEhxaFBJZjNvY2w2WWZDa09zZmtUM1g1QWpObzVXMGV1bW96clhmWWcyMFY3OVRHVENHSEU4aGc2ZERQSWc2aVZVa2djTXMwQ0ZXS2lNRWN2SUU0YVIxM0p5YmtCc3FGU1NRRVlmeDRaS1pFcXhJa1lza3Z5VnIvT0l4RUlSZVR6eERwalZOOGRDSC85TmxxbW5MNGZtMDhjMEgzMGJaZ3A1b2d1NUZYUGQxekFWYmRhcC8zN0RwY0o0Y3Ira3lCQUpsVUtYQ0lVdVh4ZjE5a3Y1U0I2cmxNaGx1aVJEL1R2eWdIN0pCb3Ard3VDbE12MUtSTTdoUzViS292VXYyN1JwbzFoWkpJWmV0UTJJTzJKT2pKMzZqQmxvRlladmlmUUJaRC9Gc2tnSmRmd3prUW9YaTZWa1paRTRnYndYdW43ZzdYQ0pWVWlvVzhmUXFmRXVTcmxTU0tZd3d1VlNVc0YzanZYK0NRL3pSZDA0RUFBQSJ9 -->

<div data-pagedtable="false">
  <script data-pagedtable-source type="application/json">
{"columns":[{"label":["Date"],"name":[1],"type":["chr"],"align":["left"]},{"label":["Treatment"],"name":[2],"type":["chr"],"align":["left"]},{"label":["Dye"],"name":[3],"type":["chr"],"align":["left"]},{"label":["p_live"],"name":[4],"type":["dbl"],"align":["right"]},{"label":["p_intermediate"],"name":[5],"type":["dbl"],"align":["right"]},{"label":["p_dead"],"name":[6],"type":["dbl"],"align":["right"]},{"label":["FSC_live"],"name":[7],"type":["dbl"],"align":["right"]},{"label":["FSC_intermediate"],"name":[8],"type":["dbl"],"align":["right"]},{"label":["BL1_live"],"name":[9],"type":["dbl"],"align":["right"]},{"label":["BL1_intermediate"],"name":[10],"type":["dbl"],"align":["right"]}],"data":[{"1":"011124","2":"0","3":"PI alone","4":"0.9933428923","5":"0.0000000000","6":"0.006657108","7":"414660.0","8":"NaN","9":"73.0","10":"NaN"},{"1":"011124","2":"0","3":"PI first","4":"0.7759888895","5":"0.2132606347","6":"0.010750476","7":"412039.0","8":"436111.0","9":"2132.0","10":"8942.0"},{"1":"011124","2":"0","3":"SYTO9+PI","4":"0.8975578475","5":"0.0951210388","6":"0.007321114","7":"405841.5","8":"482793.0","9":"2059.0","10":"7509.5"},{"1":"011124","2":"10","3":"PI alone","4":"0.9900889317","5":"0.0000000000","6":"0.009911068","7":"508718.0","8":"NaN","9":"77.0","10":"NaN"},{"1":"011124","2":"10","3":"PI first","4":"0.9430183969","5":"0.0477017420","6":"0.009279861","7":"493254.0","8":"670491.0","9":"2385.0","10":"4872.0"},{"1":"011124","2":"10","3":"SYTO9+PI","4":"0.9468230992","5":"0.0417999898","6":"0.011376911","7":"510842.5","8":"687909.0","9":"2280.0","10":"4942.0"},{"1":"011124","2":"100","3":"PI alone","4":"0.9864794592","5":"0.0000000000","6":"0.013520541","7":"396592.0","8":"NaN","9":"71.0","10":"NaN"},{"1":"011124","2":"100","3":"PI first","4":"0.6371223326","5":"0.3443904500","6":"0.018487217","7":"380278.5","8":"455175.5","9":"2061.5","10":"9484.0"},{"1":"011124","2":"100","3":"SYTO9+PI","4":"0.4373083662","5":"0.5473609286","6":"0.015330705","7":"380901.0","8":"435343.0","9":"1397.0","10":"11872.0"},{"1":"011124","2":"1000","3":"PI alone","4":"0.0012065890","5":"0.0000000000","6":"0.998793411","7":"305405.0","8":"NaN","9":"76.0","10":"NaN"},{"1":"011124","2":"1000","3":"PI first","4":"0.0005631784","5":"0.0002047921","6":"0.999232029","7":"344391.0","8":"312360.5","9":"3035.0","10":"9058.0"},{"1":"011124","2":"1000","3":"SYTO9+PI","4":"0.0005288767","5":"0.0003173260","6":"0.999153797","7":"203864.0","8":"327406.5","9":"1179.0","10":"10968.0"},{"1":"011524","2":"0","3":"PI alone","4":"0.9976040890","5":"0.0000000000","6":"0.002395911","7":"412441.0","8":"NaN","9":"72.0","10":"NaN"},{"1":"011524","2":"0","3":"PI first","4":"0.5938076686","5":"0.3997334427","6":"0.006458889","7":"412792.5","8":"408852.0","9":"2166.5","10":"11154.5"},{"1":"011524","2":"0","3":"SYTO9+PI","4":"0.6924639447","5":"0.3034227097","6":"0.004113346","7":"398157.0","8":"415064.0","9":"2233.0","10":"10249.0"},{"1":"011524","2":"10","3":"PI alone","4":"0.9882346533","5":"0.0000000000","6":"0.011765347","7":"506095.0","8":"NaN","9":"78.0","10":"NaN"},{"1":"011524","2":"10","3":"PI first","4":"0.9171791037","5":"0.0636529832","6":"0.019167913","7":"490408.5","8":"680341.0","9":"2431.0","10":"5119.0"},{"1":"011524","2":"10","3":"SYTO9+PI","4":"0.9143788057","5":"0.0701848093","6":"0.015436385","7":"480299.0","8":"647181.0","9":"2447.0","10":"5266.0"},{"1":"011524","2":"100","3":"PI alone","4":"0.9897646415","5":"0.0000000000","6":"0.010235359","7":"397563.0","8":"NaN","9":"71.0","10":"NaN"},{"1":"011524","2":"100","3":"PI first","4":"0.4778322554","5":"0.5015126226","6":"0.020655122","7":"365087.0","8":"409669.0","9":"1644.0","10":"11151.0"},{"1":"011524","2":"100","3":"SYTO9+PI","4":"0.3595837294","5":"0.6285585631","6":"0.011857708","7":"371310.0","8":"412758.0","9":"1380.0","10":"13136.0"},{"1":"011524","2":"1000","3":"PI alone","4":"0.0018532246","5":"0.0000000000","6":"0.998146775","7":"327944.0","8":"NaN","9":"75.0","10":"NaN"},{"1":"011524","2":"1000","3":"PI first","4":"0.0003458669","5":"0.0000000000","6":"0.999654133","7":"272611.0","8":"NaN","9":"1754.0","10":"NaN"},{"1":"011524","2":"1000","3":"SYTO9+PI","4":"0.0004356033","5":"0.0002420018","6":"0.999322395","7":"416363.0","8":"387519.0","9":"2719.0","10":"12734.0"},{"1":"011624","2":"0","3":"PI alone","4":"0.9979553403","5":"0.0000000000","6":"0.002044660","7":"410774.0","8":"NaN","9":"71.0","10":"NaN"},{"1":"011624","2":"0","3":"PI first","4":"0.9228283492","5":"0.0733377150","6":"0.003833936","7":"397254.0","8":"400863.0","9":"1439.0","10":"8575.0"},{"1":"011624","2":"0","3":"SYTO9+PI","4":"0.8002219169","5":"0.1964493290","6":"0.003328754","7":"387982.0","8":"384857.5","9":"1593.0","10":"9810.5"},{"1":"011624","2":"10","3":"PI alone","4":"0.9853669646","5":"0.0000000000","6":"0.014633035","7":"442471.0","8":"NaN","9":"74.0","10":"NaN"},{"1":"011624","2":"10","3":"PI first","4":"0.9563903993","5":"0.0232877465","6":"0.020321854","7":"448755.0","8":"576279.0","9":"1687.0","10":"5472.0"},{"1":"011624","2":"10","3":"SYTO9+PI","4":"0.9490090943","5":"0.0326446933","6":"0.018346212","7":"443723.0","8":"547754.0","9":"1714.0","10":"6119.0"},{"1":"011624","2":"100","3":"PI alone","4":"0.9799029799","5":"0.0000000000","6":"0.020097020","7":"373403.0","8":"NaN","9":"71.0","10":"NaN"},{"1":"011624","2":"100","3":"PI first","4":"0.2729519403","5":"0.7031759386","6":"0.023872121","7":"331494.0","8":"386652.0","9":"2291.0","10":"14046.0"},{"1":"011624","2":"100","3":"SYTO9+PI","4":"0.2193433444","5":"0.7590735556","6":"0.021583100","7":"340485.0","8":"390025.5","9":"1824.0","10":"15947.5"},{"1":"011624","2":"1000","3":"PI alone","4":"0.0011624968","5":"0.0000000000","6":"0.998837503","7":"341867.0","8":"NaN","9":"65.0","10":"NaN"},{"1":"011624","2":"1000","3":"PI first","4":"0.0004929346","5":"0.0001095410","6":"0.999397524","7":"240910.0","8":"291143.5","9":"313.0","10":"12557.0"},{"1":"011624","2":"1000","3":"SYTO9+PI","4":"0.0006421339","5":"0.0002963695","6":"0.999061497","7":"278007.0","8":"378636.5","9":"575.0","10":"23836.0"}],"options":{"columns":{"min":{},"max":[10],"total":[10]},"rows":{"min":[10],"max":[10],"total":[36]},"pages":{}}}
  </script>
</div>

<!-- rnb-frame-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



# Exploratory comparison between PI alone and combo

PI alone

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxucDEgPC0gZmluYWwgJT4lIFxuICBkcGx5cjo6ZmlsdGVyKER5ZSA9PSBcXFBJIGFsb25lXFwpICU+JSBcbiAgZ2dwbG90KGFlcyh4ID0gVHJlYXRtZW50LCB5ID0gMS1wX2xpdmUpKSArIFxuICBnZW9tX3BvaW50KHNpemUgPSAyLCBzaGFwZSA9IDIxLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjA1KSkgKyBcbiAgI3N0YXRfc3VtbWFyeShmdW4gPSBcXG1lYW5cXCwgZ2VvbSA9IFxccG9pbnRcXCwgY29sb3IgPSBcXHJlZFxcKSArXG4gIGxhYnMoeCA9IGJxdW90ZShIWzJdKk9bMl1+KG1NKSksIHkgPSBcXDEgLSAlTGl2ZVxcKSArXG4gIHRoZW1lX2Nvd3Bsb3QoKVxuXG5pbnNldCA8LSBmaW5hbCAlPiUgXG4gIGRwbHlyOjpmaWx0ZXIoRHllID09IFxcUEkgYWxvbmVcXCwgVHJlYXRtZW50ICE9IFxcMTAwMFxcKSAlPiUgXG4gIGdncGxvdChhZXMoeCA9IFRyZWF0bWVudCwgeSA9IDEtcF9saXZlKSkgKyBcbiAgZ2VvbV9iYXIoc3RhdCA9IFxcc3VtbWFyeVxcLCBmdW4gPSBcXG1lYW5cXCwgZmlsbCA9IFxcc2t5Ymx1ZTJcXCwgYWxwaGEgPSAwLjcpICtcbiAgZ2VvbV9wb2ludChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4wNSkpICsgXG4gICNzdGF0X3N1bW1hcnkoZnVuID0gXFxtZWFuXFwsIGdlb20gPSBcXHBvaW50XFwsIHNpemUgPSAxNSwgc2hhcGUgPSBcXC1cXCwgY29sb3IgPSBcXHJlZFxcKSArXG4gIGxhYnMoeCA9IGJxdW90ZShIWzJdKk9bMl1+KG1NKSksIHkgPSBcXDEgLSAlTGl2ZVxcKSArXG4gIHRoZW1lX21pbmltYWxfaGdyaWQoMTEpXG5cbmdnZHJhdyhwMSArIGxhYnMoc3VidGl0bGUgPSBcXFBJIGFsb25lXG5gYGAifQ== -->

```r
```r
p1 <- final %>% 
  dplyr::filter(Dye == \PI alone\) %>% 
  ggplot(aes(x = Treatment, y = 1-p_live)) + 
  geom_point(size = 2, shape = 21, position = position_jitter(0.05)) + 
  #stat_summary(fun = \mean\, geom = \point\, color = \red\) +
  labs(x = bquote(H[2]*O[2]~(mM)), y = \1 - %Live\) +
  theme_cowplot()

inset <- final %>% 
  dplyr::filter(Dye == \PI alone\, Treatment != \1000\) %>% 
  ggplot(aes(x = Treatment, y = 1-p_live)) + 
  geom_bar(stat = \summary\, fun = \mean\, fill = \skyblue2\, alpha = 0.7) +
  geom_point(size = 2, position = position_jitter(0.05)) + 
  #stat_summary(fun = \mean\, geom = \point\, size = 15, shape = \-\, color = \red\) +
  labs(x = bquote(H[2]*O[2]~(mM)), y = \1 - %Live\) +
  theme_minimal_hgrid(11)

ggdraw(p1 + labs(subtitle = \PI alone

PI+SYTO9

```r
p2 <- final %>% 
  dplyr::filter(Dye != \PI alone\, Treatment != \0\) %>% 
  ggplot(aes(x = Treatment, y = 1-p_live)) + 
  geom_bar(stat = \summary\, fun = \mean\, fill = \gray\, alpha = 0.7) +
  geom_point(size = 2, position = position_jitter(0.05)) + 
  #stat_summary(fun = \mean\, geom = \point\, shape = \-\, 
  #             size = 15, color = \red\, position = position_nudge(x = 0.2)) +
  labs(x = bquote(H[2]*O[2]~(mM)), y = \1 - %Live\) +
  facet_wrap(~Dye) +
  theme_cowplot() +
  theme(strip.text = element_text(size = rel(1.2), face = 2),
        strip.background = element_blank())

p2
ggsave(\../output/12.01-PI+SYTO9-one-minus-plive.png\)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiU2F2aW5nIDcuMjkgeCA0LjUxIGluIGltYWdlXG4ifQ== -->

Saving 7.29 x 4.51 in image




<!-- rnb-output-end -->

<!-- rnb-plot-begin -->

<img src="data:image/png;base64,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UrVqVTsrZV4Tsoe3adOm8s4775iPHfXiaZo+fbqZcqNevXpm3U0ZU5BvCCCQMgLnnHOOea/QKQx1DJ6O/dcbYHUolH4qpLO/BN8QmzI4nCgCCCSkgH5yNXv2bNHZqZYtW2be16688kqpVq2azJw5U2bMmCH6yZWut2nTRvTTrlRMadZ4tcyfzeuRzJAhQ6Rfv36iA6r904QJE8xFe/31181UZJs3b5ZKlSpJ79695emnn5affvrJzPLw0EMPSZ8+fcyubsr41xG8rHc96h9B/WEhIYCAO4FFixa5K0ipLAn4D7fK0o4URgCBHBHgvS76rDn9PpcQQxoWL15sHjKh82Vq0inIJk6cKO+9957omF292Uz/a9EA2E5uythleUUAAQQQQAABBBBIXoG46uHNKrN2Tq9fv170Y0p77ErwMdyUCd5H1+nhDaVCHgIZC9DrkbFPpFtzuucj0naxHwKpKsB7XfSvfE6/zyXkGF6bWW8wsW9Ss/OCX92UCd6HdQQQQAABBBBAAIHkEUiIIQ3Jw82ZIIAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtQMDrtTj1IYAAAggggAACCHgqQMDrKTeVIYAAAggggAACCHgtkMfrCqkPAQQQQAABBJJb4Pjx47J69WrZv3+/1KhRQ0qUKJHcJ8zZxb0APbxxf4loIAIIIIAAAokjsGnTJqlevbr87W9/k3bt2knJkiVlyJAhiXMCtDQpBejhTcrLykkhgAACCCDgvcCff/4p55xzTrqKH3zwQSlQoIDce++96baRgYAXAvTweqFMHQgggAACCKSAwNtvvy358+cPeabPPfdcyHwyEfBCgIDXC2XqQAABBBBAIAUEfv31Vzl27FjIM923b1/IfDIR8EKAgNcLZepAAAEEEEAgBQTOPffcsD28+fLlSwEBTjFeBQh44/XK0C4EEEAAAQQSTKBz585y4sSJkK3WcbwkBGIlEFc3rfl8PklLS4uVBfUigAACCCCAQDYEKlWqJL/88oucf/75Zioy/buuX7fccov069cvG0dmVwSyJxAXAe/o0aPlvffek0WLFskll1wigwYNkqZNm4Y9s8svv1x27doVcnuvXr3kH//4h9nWvXt3WbBgQbpyS5culcKFC6fLJwMBBBBAAAEEsidw3nnnyZ49e2ThwoVmHt66deuaADh7R2VvBLInEPOAd/78+XL33XebOfpeffVV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R8AzAQJez6ipCAEEEEAAgeQV+P3336Vo0aIhTzBXrlyyYcOGkNvIRMALAQJeL5SpAwEEEEAAgSQXKFasmBm6EOo0T506FTYYDlWePASiLUDAG21RjocAAggggEAKClSrVk2KFCkS8swPHTok5513XshtZCLghQABrxfK1IEAAggggECSC+TLl09GjBhhzrJAgQKmt7dw4cJSqlQpmT17tuh2EgKxEmCWhljJUy8CCCCAAAJJJlCyZEkT3M6ZM0d27dolZ511ljRp0kQ08CUhEEuBbAW8OvXId999J/qIw4EDB8ratWulUqVKUrx48VieE3UjgAACCCCAQIwENLi9/vrrY1Q71SIQWiCiIQ36X1vLli2lcePG8uCDD8rrr78uR48elfHjx8uFF14oOuceCQEEEEAAAQQQQACBeBCIKOC966675KuvvjKTSA8ePNg5jw4dOpgB6x07dpTly5c7+SwggAACCCCAAAIIIBArgSwHvGvWrJFPP/1U3nnnHXnppZekVq1aTtvr168vS5culYIFC8r777/v5LOAAAIIIIAAAggggECsBLIc8K5YsUJ0AunWrVuHbLNOSaID1NevXx9yO5kIIIAAAggggAACCHgpkOWAt0SJEnL69GlZsmRJ2HbqGN8yZcqE3c4GBBBAAAEEEEAAAQS8EshywFunTh3Jnz+/6NjdgwcPBrRTA2Ed6qDBsA5vICGAAAIIIIAAAgggEGuBLE9LphNIv/jii/LAAw9IhQoVpEGDBuYcnn76afnkk09k8+bNJu+2226L9blRPwIIIIAAAggggAACkuUeXjW7//775b333jM3p82aNcswvvHGG7Jlyxbp2rWrfP7555I7d254EUAAAQQQQAABBBCIuUCWe3hPnTplgtk77rhDOnfuLH/88Yf89ttvomN79TnaRYsWjflJ0QAEEEAAAQQQQAABBGyBLAe8q1atEp1vVwPe22+/XapUqWK+7APyigACCCCAAAIIIIBAPAlkeUiDPidb59l94okn5Nxzz5UWLVrIhx9+aJ60Fk8nRlsQQAABBBBAAAEEEFCBLAe85cuXN09R0yep6Y1rOi9vp06dpFy5ctKzZ88MpyuDHAEEEEAAAQQQQAABrwWyHPDaDaxZs6aZmmzjxo0yc+ZMadWqlYwdO9ZMR1ajRg354osv7KK8IoAAAggggAACCCAQM4GI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" />

<!-- rnb-plot-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->

> Plot % Dead and Compare


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuYGBgclxucGYxZyA8LSBnYXRlZF9kYXRhICU+JVxuICBkcGx5cjo6ZmlsdGVyKCEoRHllICVpbiUgYyhcXFBJXFwpKSkgJT4lIFxuICBkcGx5cjo6ZmlsdGVyKCEoVHJlYXRtZW50ICVpbiUgYyhcXDEwMDAgbU1cXCkpKSAgJT4lXG4gICNtdXRhdGUoRGlsdXRpb24gPSBmYWN0b3IoRGlsdXRpb24sIGxldmVscyA9IGMoXFwyNTAgeFxcLCBcXDUwMCB4XFwsIFxcMTAwMCB4XFwsIFxcMjAwMCB4XFwpKSkgJT4lXG4gIGdncGxvdChhZXMoeCA9IFRyZWF0bWVudCwgeSA9IHBlcmNlbnRfTGl2ZSkpICtcbiAgZmFjZXRfd3JhcCh+IER5ZSwgc2NhbGUgPSBcXGZyZWVfeVxcKSArXG4gIGdlb21fYm94cGxvdCgpICtcbiAgZ2VvbV9wb2ludChzdHJva2UgPSAxLCBzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yKSkgK1xuICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArXG4gIHRoZW1lX21pbmltYWwoKVxucGYxZyArXG4gIGxhYnMoeCA9IFxcSHlkcm9nZW4gUGVyb3hpZGUgVHJlYXRtZW50IENvbmNlbnRyYXRpb25cXCwgeSA9IFxcR2F0ZWQgTGl2ZSBDZWxsc1xcKSArXG4gIHBhbmVsX2JvcmRlcihjb2xvciA9IFxcYmxhY2tcXCwgc2l6ZSA9IDEuNSkgK1xuICB0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgICAgIHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X2JsYW5rKCksXG4gICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9IFxcYm9sZFxcLCBjb2xvciA9IFxcYmxhY2tcXCksICAjIEFkanVzdCBzaXplIGFuZCBmYWNlIChib2xkKVxuICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYsIGZhY2UgPSBcXGJvbGRcXCwgY29sb3IgPSBcXGJsYWNrXFwpLFxuICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBmYWNlID0gXFxib2xkXFwpLFxuICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBmYWNlID0gXFxib2xkXFwpXG4gICAgICAgICkrIFxuICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiwgZmFjZSA9IFxcYm9sZFxcKSkgXG4jZ2dzYXZlKFxcLi4vb3V0cHV0LzIwMjQwMTA0LVBJLURpbHV0aW9ucy1HYXRlZF9SUC1QbG90LnBuZ1xcLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUpXG5gYGBcbmBgYFxuYGBgIn0= -->

```r
```r
```r
pf1g <- gated_data %>%
  dplyr::filter(!(Dye %in% c(\PI\))) %>% 
  dplyr::filter(!(Treatment %in% c(\1000 mM\)))  %>%
  #mutate(Dilution = factor(Dilution, levels = c(\250 x\, \500 x\, \1000 x\, \2000 x\))) %>%
  ggplot(aes(x = Treatment, y = percent_Live)) +
  facet_wrap(~ Dye, scale = \free_y\) +
  geom_boxplot() +
  geom_point(stroke = 1, size = 2, position = position_jitter(0.2)) +
  scale_y_continuous(labels = scales::percent) +
  theme_minimal()
pf1g +
  labs(x = \Hydrogen Peroxide Treatment Concentration\, y = \Gated Live Cells\) +
  panel_border(color = \black\, size = 1.5) +
  theme(axis.line = element_blank(),
        strip.background = element_blank(),
        axis.text.x = element_text(size = 12, face = \bold\, color = \black\),  # Adjust size and face (bold)
        axis.text.y = element_text(size = 16, face = \bold\, color = \black\),
        axis.title.x = element_text(size = 16, face = \bold\),
        axis.title.y = element_text(size = 16, face = \bold\)
        )+ 
  theme(strip.text = element_text(size = 16, face = \bold\)) 
#ggsave(\../output/20240104-PI-Dilutions-Gated_RP-Plot.png\, width = 7, height = 5)
LS0tCnRpdGxlOiAiRHllIE9yZGVyICYgRGlzdGluZ3Vpc2hpbmcgUG93ZXIiCmF1dGhvcjogSGFueGkgVGFuZywgQmluIEhlCmRhdGU6ICIyMDI0LTAxLTE3ICh1cGRhdGVkIGByIFN5cy50aW1lKClgKSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19kZXB0aDogNAogICAgY29kZV9mb2xkaW5nOiBoaWRlCi0tLQoKIyBCYWNrZ3JvdW5kClRoaXMgaXMgdGhlIGZsb3cgY3l0b21ldHJ5IGRhdGEgZm9yIG1pZ2xvZyBwaGFzZSBDZyBzdGFpbmVkIHdpdGggUEkvUEkrU1lUTzkvIFNZVE8rUEkgaW4gZGlmZmVyZW50IHN0YWluaW5nIG9yZGVycywgYW5kIHJ1biB0aHJvdWdoIGZsb3cgY3l0b21ldHJ5IChkZXRhaWxzIGluIEVMTikuIFRoZSBnb2FsIGlzIHRvIGVzdGFibGlzaCBGdW5nYUxpZ2h0J3MgZGlzdGluZ3Vpc2hpbmcgcG93ZXIgd2l0aCBkaWZmZXJlbnQgc3RhaW5pbmcgcHJvdG9jb2xzLgoKYGBge3Igc2V0dXAsIG1lc3NhZ2U9RkFMU0V9CnJlcXVpcmUodGlkeXZlcnNlKQpyZXF1aXJlKGZsb3dDb3JlKQpyZXF1aXJlKGZsb3dDbHVzdCkKcmVxdWlyZShvcGVuQ3l0bykKcmVxdWlyZShnZ2N5dG8pCnJlcXVpcmUoY293cGxvdCkKcmVxdWlyZShnZ3JpZGdlcykKYGBgCgpgYGB7cn0Kb2xkIDwtIHRoZW1lX3NldCh0aGVtZV9taW5pbWFsKCkpCmBgYAoKIyBJbXBvcnQgZGF0YQoKPiBGQ1MgZmlsZXMgYXJlIHN0b3JlZCBpbiBSRFNTL3VzZXIvZmxvdyBjeXRvbWV0cnksIEZDUyBpcyByZWFkIGFuZCB3cml0ZSBpbnRvIGFuIGlucHV0IHRzdiB0YWJsZS4gVGhlIHRzdiBmaWxlIGlzIGF2YWxpYWJsZSBmcm9tIHRoZSBJbnB1dCBmb2xkZXIuCgpgYGB7cn0KIyB1c2UgcmVsYXRpdmUgcGF0aCB0byBtYWtlIGl0IGVhc2llciBmb3IgY29sbGFib3JhdGlvbgpkYXRhLnBhdGggPSAiL1ZvbHVtZXMvcmRzc19iaGUyL1VzZXIvSGFueGkgVGFuZy9GbG93IEN5dG9tZXRyeS8yMDI0MDEwOV8wMTE2IER5ZSBvcmRlci8iCmRhdDAgPC0gcmVhZC5mbG93U2V0KHBhdGggPSBkYXRhLnBhdGgsIHRyYW5zZm9ybWF0aW9uID0gRkFMU0UsICAjIHRoZSBvcmlnaW5hbCB2YWx1ZXMgYXJlIGFscmVhZHkgbGluZWFyaXplZC4gCiAgICAgICAgICAgICAgICAgICAgIGVtcHR5VmFsdWUgPSBGQUxTRSwgIGFsdGVyLm5hbWVzID0gVFJVRSwgICAjIGNoYW5nZSBwYXJhbWV0ZXIgbmFtZXMgdG8gUiBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgY29sdW1uLnBhdHRlcm4gPSAiLkh8RlNDfFNTQyIpICMgb25seSBsb2FkIHRoZSBoZWlnaHQgdmFyaWFibGVzIGZvciB0aGUgZmx1b3Jlc2NlbnQgcGFyYW1ldGVycwpgYGAKCiMjIFNpbXBsaWZ5IHRoZSBzYW1wbGUgbmFtZXMKCmBgYHtyfQojcmVxdWlyZShQVFhRQykKI3NvdXJjZSgiLi4vc2NyaXB0LzIwMjIwMzI2LXNpbXBsaWZ5LW5hbWVzLXN1YnJvdXRpbmUuUiIpCm9yaU5hbWVzIDwtIHNhbXBsZU5hbWVzKGRhdDApCnRtcCA8LSBzdHJfc3BsaXQob3JpTmFtZXMsIHBhdHRlcm4gPSAiWyBfXSsiLCBzaW1wbGlmeSA9IFRSVUUpWyxjKDEsIDYsIDcpXQpjb2xuYW1lcyh0bXApIDwtIGMoIkRhdGUiLCAiVHJlYXRtZW50IiwgIkR5ZSIpCnNhbXBsZSA8LSBkYXRhLmZyYW1lKHRtcCkgJT4lIAogIG11dGF0ZSgKICAgIER5ZSA9IGNhc2VfbWF0Y2goCiAgICAgIER5ZSwKICAgICAgInAuZmNzIiB+ICJQSSBhbG9uZSIsCiAgICAgICJwZi5mY3MiIH4gIlBJIGZpcnN0IiwKICAgICAgInNmLmZjcyIgfiAiU1lUTzkrUEkiLAogICAgICAuZGVmYXVsdCA9IE5BCiAgICApCiAgKQpyb3duYW1lcyhzYW1wbGUpIDwtIG9yaU5hbWVzCnBEYXRhKGRhdDApIDwtIHNhbXBsZQpkYXQgPC0gZGF0MFshaXMubmEoc2FtcGxlJER5ZSldCnByaW50KHBEYXRhKGRhdCkgJT4lIGFzX3RpYmJsZSgpKQp3cml0ZV90c3YocERhdGEoZGF0KSwgZmlsZSA9ICIuLi9kYXRhLzEyLjAxLXNhbXBsZS1saXN0LTIwMjQwMTE3LnRzdiIpCmBgYAoKIyBCYXNpYyBnYXRpbmcKIyMgT3V0bGllcgpUaGUgZm9sbG93aW5nIGdhcGhpbmcgc3RlcHMgYXJlIHVzZWQgdG8gZ2F0ZSBzaW5nbGV0cyBieSBGU0MgYW5kIFNTQyB2YWx1ZXMuIE9ubHkgc2luZ2xldHMgYXJlIGluY2x1ZGVkIGluIGFuYWx5c2lzLgoKYGBge3J9Cm91dGxpZXIuZ2F0ZSA8LSByZWN0YW5nbGVHYXRlKGZpbHRlcklkID0gIi1vdXRsaWVyIiwgIkZTQy5IIiA9IGMoMS4yZTUsIDFlNiksICJTU0MuSCIgPSBjKDFlMiwgMWU2KSkKZ2djeXRvKGRhdFtjKDIsMjApXSwgYWVzKHggPSBGU0MuSCwgeSA9IFNTQy5IKSwgc3Vic2V0ID0gInJvb3QiKSArCiAgZ2VvbV9oZXgoYmlucyA9IDY0KSArIGdlb21fZ2F0ZShvdXRsaWVyLmdhdGUpICsgZmFjZXRfd3JhcCh+bmFtZSwgbmNvbCA9IDIpICsgZ2djeXRvX3Bhcl9zZXQobGltaXRzID0gImluc3RydW1lbnQiKQpgYGAKQWRkIGdhdGUgdG8gR1MKYGBge3J9CiMgc2hvcnRlbiB0aGUgbmFtZXMgb2YgdGhlIHNhbXBsZXMgZm9yIHBsb3R0aW5nCnNob3J0TmFtZXMgPC0gd2l0aChwRGF0YShkYXQpLCAKICAgICAgICAgICAgICAgICAgIHBhc3RlKHN1YnN0cihEYXRlLCAxLCA0KSwgcGFzdGUwKFRyZWF0bWVudCwgIiBtTSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAsIER5ZSwgc2VwID0gIl8iKSkKbmFtZXMoc2hvcnROYW1lcykgPC0gc2FtcGxlTmFtZXMoZGF0KQpncyA8LSBHYXRpbmdTZXQoZGF0KSAjIGNyZWF0ZSBhIEdhdGluZ1NldAojIHJlbmFtZSB0aGUgR2F0aW5nU2V0CmlmKGFsbChzYW1wbGVOYW1lcyhncykgPT0gbmFtZXMoc2hvcnROYW1lcykpKQogIHBEYXRhKGdzKSRuYW1lIDwtIHNob3J0TmFtZXMKIyByZXBhaXIgdGhlIERhdGUgY29sdW1uIGluIHBEYXRhCnBEYXRhKGdzKSREYXRlID0gcGFzdGUwKCIwIiwgcERhdGEoZ3MpJERhdGUpCiMgYWRkIHRoZSBvdXRsaWVyIGdhdGUKZ3NfcG9wX2FkZChncywgb3V0bGllci5nYXRlLCBwYXJlbnQgPSAicm9vdCIpCiMgY29tcHV0ZQpyZWNvbXB1dGUoZ3MpCmBgYAoKIyMgR2F0ZSBmb3Igc2luZ2xldHMKCmBgYHtyIGZpZy53aWR0aD00LCBmaWcuaGVpZ2h0PTR9CnNjUGFycyA8LSBnZ2N5dG9fcGFyX3NldChsaW1pdHMgPSBsaXN0KHggPSBjKDAsMWU2KSwgeSA9IGMoMzAsMzAwKSkpCmV4IDwtIFN1YnNldChkYXRbWzFdXSwgb3V0bGllci5nYXRlKQpwb2x5Z29uIDwtIG1hdHJpeChjKDFlNSwgMWU1LCAxZTYsIDFlNiwgCiAgICAgICAgICAgICAgICAgICAgNjAsIDEwNSwgMTM1LDYwKSwgbmNvbCA9IDIpCmNvbG5hbWVzKHBvbHlnb24pIDwtIGMoIkZTQy5IIiwgIkZTQy5XIikKc2luZ2xldC5nYXRlIDwtIHBvbHlnb25HYXRlKGZpbHRlcklkID0gInNpbmdsZXQiLCAuZ2F0ZSA9IHBvbHlnb24pCmdnY3l0byhleCwgYWVzKHggPSBGU0MuSCwgeSA9IEZTQy5XKSkgKyBnZW9tX2hleChiaW5zID0gMTI4KSArIGdlb21fZ2F0ZShzaW5nbGV0LmdhdGUpICsgZ2VvbV9zdGF0cygpICsgc2NQYXJzCmBgYAoKCkFkZCB0aGlzIGdhdGUgdG8gdGhlIGdhdGluZ1NldApgYGB7cn0KZ3NfcG9wX2FkZChncywgc2luZ2xldC5nYXRlLCBwYXJlbnQgPSAiLW91dGxpZXIiLCBuYW1lID0gInNpbmdsZXQiKQpyZWNvbXB1dGUoZ3MpCmBgYApgYGB7ciBmaWcud2lkdGg9Nn0Kc2NQYXJzIDwtIGdnY3l0b19wYXJfc2V0KGxpbWl0cyA9IGxpc3QoeCA9IGMoMCwxZTYpLCB5ID0gYygzMCwyMDApKSkKdGVzdCA8LSBzYW1wbGUoMTpsZW5ndGgoZ3MpLCA4KQpnZ2N5dG8oZ3NbdGVzdF0sIGFlcyh4ID0gRlNDLkgsIHkgPSBGU0MuVyksIHN1YnNldCA9ICItb3V0bGllciIpICsKICBnZW9tX2hleChiaW5zID0gMTI4KSArIGdlb21fZ2F0ZSgic2luZ2xldCIpICsgZmFjZXRfd3JhcCh+bmFtZSwgbmNvbCA9IDQpICsgCiAgc2NQYXJzIyArIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpCgpgYGAKIyMgRlNDIGFuZCBTU0MgdnMgdHJlYXRtZW50IGFuZCBkeWUgey50YWJzZXR9CgojIyMgRlNDCgpgYGB7cn0KbXVsdF9mb3JtYXQgPC0gZnVuY3Rpb24oKSB7CiAgICAgZnVuY3Rpb24oeCkgZm9ybWF0KHgvMTAwMDAsZGlnaXRzID0gMikgCn0KZm9yKGRhdGUgaW4gYygiMDExMTI0IiwgIjAxMTUyNCIsICIwMTE2MjQiKSl7CiAgcCA8LSBnZ2N5dG8oZ3NbcERhdGEoZ3MpJERhdGUgPT0gZGF0ZV0sIGFlcyh4ID0gRlNDLkgpLCBzdWJzZXQgPSAic2luZ2xldCIpICsgCiAgICBnZW9tX2RlbnNpdHlfcmlkZ2VzKGFlcyh5ID0gVHJlYXRtZW50KSwgZmlsbCA9ICJmb3Jlc3RncmVlbiIsIGFscGhhID0gMC44KSArIAogICAgc2NhbGVfeF9jb250aW51b3VzKGxhYmVscyA9IG11bHRfZm9ybWF0KCksIG5hbWUgPSAiRlNDLkggeCAxMDAwMCIpICsKICAgIGZhY2V0X3dyYXAofkR5ZSkgKyBsYWJzKHRpdGxlID0gcGFzdGUwKCJEYXRlOiAiLCBkYXRlKSkKICBwcmludChwKQp9CmBgYAo+IE1vY2sgdHJlYXRlZCBzYW1wbGUgc3RhbmRzIG91dCAtIHRoZSB0aHJlZSBIMk8yIHRyZWF0ZWQgc2FtcGxlcyBzaG93IGEgdHJlbmQgb2YgZGVjcmVhc2luZyBGU0Mgd2l0aCBpbmNyZWFzaW5nIFJPUwo+IE1vY2sgaGFzIGEgRlNDIGluIGJldHdlZW4gMTAgYW5kIDEwMCBtTQoKIyMjIEZTQyB2cyBCTDEuSCAoZ3JlZW4gc3RhaW5pbmcpCmBgYHtyfQpmb3IoZGF0ZSBpbiBjKCIwMTExMjQiLCAiMDExNTI0IiwgIjAxMTYyNCIpKXsKICBwIDwtIGdnY3l0byhnc1twRGF0YShncykkRGF0ZSA9PSBkYXRlXSwgYWVzKHggPSBCTDEuSCwgeSA9IEZTQy5IKSwgc3Vic2V0ID0gInNpbmdsZXQiKSArIAogICAgZ2VvbV9oZXgoYmlucyA9IDEyOCkgKyAKICAgICNnZW9tX2dhdGUobGl2ZS5nYXRlKSArIAogICAgI2dlb21fc3RhdHMobG9jYXRpb24gPSAiZGF0YSIsIGFkanVzdCA9IGMoMC4xLCAwLjgpLCBkaWdpdHMgPSAyKSArIAogICAgbGFicyh0aXRsZSA9IHBhc3RlMCgiRGF0ZTogIiwgZGF0ZSkpICsKICAgIGZhY2V0X2dyaWQoRHllIH4gVHJlYXRtZW50KSArCiAgICBzY2FsZV94X2xvZ2ljbGUoKSArICNzY2FsZV95X2xvZ2ljbGUoKSArIAogICAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMSksIGNvbG9yID0gInN0ZWVsYmx1ZSIsIGZhY2UgPSAyKSkKICBwcmludChwKQp9CmBgYAoKCiMjIyBTU0MKCmBgYHtyfQpmb3IoZGF0ZSBpbiBjKCIwMTExMjQiLCAiMDExNTI0IiwgIjAxMTYyNCIpKXsKICBwIDwtIGdnY3l0byhnc1twRGF0YShncykkRGF0ZSA9PSBkYXRlXSwgYWVzKHggPSBTU0MuSCksIHN1YnNldCA9ICJzaW5nbGV0IikgKyAKICAgIGdlb21fZGVuc2l0eV9yaWRnZXMoYWVzKHkgPSBUcmVhdG1lbnQpLCBmaWxsID0gImZvcmVzdGdyZWVuIiwgYWxwaGEgPSAwLjgpICsgCiAgICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWxzID0gbXVsdF9mb3JtYXQoKSwgbmFtZSA9ICJGU0MuSCB4IDEwMDAwIikgKwogICAgZmFjZXRfd3JhcCh+RHllKSArIGxhYnModGl0bGUgPSBwYXN0ZTAoIkRhdGU6ICIsIGRhdGUpKQogIHByaW50KHApCn0KYGBgCj4gU1NDIChjb21wbGV4aXR5IG9mIGNlbGwsIHJvdWdobHkpIGRlY3JlYXNlcyB3aXRoIGluY3JlYXNpbmcgSDJPMiBjb25jZW50cmF0aW9uCj4gTW9jayBhZ2FpbiBzaG93IGEgZGlmZmVyZW50IHBhdHRlcm4uCgoKIyBHYXRlIGZvciBzY29yaW5nIHsudGFic2V0fQoKIyMgTGl2ZSA9IHJlZCBuZWdhdGl2ZQoKVGhpcyBpcyB0aGUgbGl2ZSBwb3B1bGF0aW9uIHdpdGggcmVkIGZsdW9yZXNjZW5jZSBiZWxvdyAxMF4yLjIKCj4gPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+SW1wb3J0YW50OiBJIGNoYW5nZWQgdGhlIFJlZCB0b3AgYm91bmRhcnkgdG8gMTBeMi4zIGZyb20gMTBeMi4yPC9zcGFuPgoKPiAqKk1haW4gdGFrZWF3YXkqKgo+Cj4gMS4gRnJvbSAxMG1NIHRvIDFNIHRyZWF0ZWQgc2FtcGxlcywgJWxpdmUgZGVjcmVhc2VzIGFuZCB0aGUgY2hhbmdlIGlzIG11Y2ggbW9yZSBvYnZpb3VzIGluIHRoZSBkdWFsIHN0YWluIChQSSBmaXJzdCBvciBzaW11bHRhbmVvdXMpIHRoYW4gUEkgYWxvbmUKPgo+IDIuIFRoZSBtb2NrIHRyZWF0ZWQgc2FtcGxlIGhhcyBhIHZpc2libGUgaGlnaCByZWQgaGlnaCBncmVlbiAobm90IGFzIGhpZ2ggYW5kIHByb21pbmVudCBhcyB0aGUgMTAwIG1NIHRyZWF0ZWQpIHRoYW4gMTAgbU0gdHJlYXRlZC4gSXQgZG9lc24ndCBmb2xsb3cgdGhlIHRyZW5kIGFib3ZlLgoKYGBge3IsIGZpZy53aWR0aD02LCBmaWcuaGVpZ2h0PTV9CiNzY1BhcnMgPC0gZ2djeXRvX3Bhcl9zZXQobGltaXRzID0gbGlzdCh4ID0gYygwLDFlNiksIHkgPSBjKDAsMWU1KSkpCnBvbHlnb24gPC0gbWF0cml4KGMoMCwgMTBeNSwgMTBeNSwgMCwKICAgICAgICAgICAgICAgICAgICAxMF4yLjMsIDEwXjIuMywgMCwgMCksIG5jb2wgPSAyKQpjb2xuYW1lcyhwb2x5Z29uKSA8LSBjKCJCTDEuSCIsICJCTDMuSCIpCmxpdmUuZ2F0ZSA8LSBwb2x5Z29uR2F0ZShmaWx0ZXJJZCA9ICJsaXZlIiwgLmdhdGUgPSBwb2x5Z29uKQpmb3IoZGF0ZSBpbiBjKCIwMTExMjQiLCAiMDExNTI0IiwgIjAxMTYyNCIpKXsKICBwIDwtIGdnY3l0byhnc1twRGF0YShncykkRGF0ZSA9PSBkYXRlXSwgYWVzKHggPSBCTDEuSCwgeSA9IEJMMy5IKSwgc3Vic2V0ID0gInNpbmdsZXQiKSArIAogICAgZ2VvbV9oZXgoYmlucyA9IDEyOCkgKyAKICAgIGdlb21fZ2F0ZShsaXZlLmdhdGUpICsgCiAgICBnZW9tX3N0YXRzKGxvY2F0aW9uID0gImRhdGEiLCBhZGp1c3QgPSBjKDAuMSwgMC44KSwgZGlnaXRzID0gMikgKyAKICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkRhdGU6ICIsIGRhdGUpKSArCiAgICBmYWNldF9ncmlkKER5ZSB+IFRyZWF0bWVudCkgKwogICAgc2NhbGVfeF9sb2dpY2xlKCkgKyBzY2FsZV95X2xvZ2ljbGUoKSArIAogICAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMSksIGNvbG9yID0gInN0ZWVsYmx1ZSIsIGZhY2UgPSAyKSkKICBwcmludChwKQp9CmBgYAo+IE5vdGljZSB0aGUgaGlnaGVyIHBlcmNlbnRhZ2Ugb2YgZXZlbnRzIGluIHRoZSBsaXZlIGdhdGUgaW4gMTAgbU0gdnMgbW9jay4KCkFkZCB0aGlzIGdhdGUgdG8gdGhlIGdhdGluZ1NldAoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KZ3NfcG9wX2FkZChncywgbGl2ZS5nYXRlLCBwYXJlbnQgPSAic2luZ2xldCIsIG5hbWUgPSAibGl2ZSIpCnJlY29tcHV0ZShncykKYGBgCgojIyBJbnRlcm1lZGlhdGUgPSBoaWdoIEcvUgpUaGlzIGlzIHRoZSBpbnRlcm1lZGlhdGUgcG9wdWxhdGlvbiB3aXRoIGhpZ2ggUmVkIGFuZCBHcmVlbi4gV2UgaHlwb3RoZXNpemUgdGhhdCB0aGV5IHJlcHJlc2VudCB0aGUgCgo+IDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPkltcG9ydGFudDogSSBjaGFuZ2VkIHRoZSBib3R0b20gYm91bmRhcnkgZnJvbSAxMF4yLjIgdG8gMTBeMi4zLCBhbmQgdGhlIGxlZnQgYm91bmRhcnkgZnJvbSAxMF4zIHRvIDIqMTBeMzwvc3Bhbj4KCj4gKipNYWluIHRha2Vhd2F5KioKPgo+IDEuIERpZmZlcmVudCBmcm9tIHRoZSAlbGl2ZSBnYXRlLCB0aGUgaW50ZXJtZWRpYXRlIHBvcHVsYXRpb24gaXMgbW9zdCBvYnZpb3VzIGluIHRoZSAKPiAxMDAgbU0gdHJlYXRlZCBzYW1wbGUsIGFuZCBhYnNlbnQgaW4gYm90aCB0aGUgMTAgbU0gYW5kIDFNIHRyZWF0ZWQgb25lcy4gVGhpcyBzdWdnZXN0cwo+IHRoYXQgdGhpcyBwb3B1bGF0aW9uIGNvdWxkIGJlIHVzZWZ1bCBmb3IgZGlzdGluZ3Vpc2hpbmcgc3RyZXNzIGxldmVscyBiZWxvdyB0aGUgbGV0aGFsIGNvbmNlbnRyYXRpb24KPiBidXQgYWJvdmUgdGhlIHRvbGVyYW5jZSBsZXZlbHMgb2YgdGhlIHNwZWNpZXMgLSBpbiB0aGlzIGNhc2UsIDwgMU0gYW5kID4gMTAgbU0uCj4KPiAyLiBUaGUgbW9jayB0cmVhdGVkIHNhbXBsZSBzaG93ZWQgYW4gaW50ZXJtZWRpYXRlIHBvcHVsYXRpb24uIFdhcyB1bmV4cGVjdGVkLgoKYGBge3IsIGZpZy53aWR0aD02LCBmaWcuaGVpZ2h0PTV9CiNzY1BhcnMgPC0gZ2djeXRvX3Bhcl9zZXQobGltaXRzID0gbGlzdCh4ID0gYygwLDFlNiksIHkgPSBjKDAsMWU2KSkpCiNleCA8LSBTdWJzZXQoZGF0LmYxZ1tbOV1dLCBzaW5nbGV0LmdhdGUpCnBvbHlnb24gPC0gbWF0cml4KGMoMTBeNSwgMioxMF4zLCAxMF41LAogICAgICAgICAgICAgICAgICAgIDEwXjIuMywgMTBeMi4zLCAxMF40KSwgbmNvbCA9IDIpCmNvbG5hbWVzKHBvbHlnb24pIDwtIGMoIkJMMS5IIiwgIkJMMy5IIikKaW50ZXIuZ2F0ZSA8LSBwb2x5Z29uR2F0ZShmaWx0ZXJJZCA9ICJpbnRlciIsIC5nYXRlID0gcG9seWdvbikKZm9yKGRhdGUgaW4gYygiMDExMTI0IiwgIjAxMTUyNCIsICIwMTE2MjQiKSl7CiAgcCA8LSBnZ2N5dG8oZ3NbcERhdGEoZ3MpJERhdGUgPT0gZGF0ZV0sIGFlcyh4ID0gQkwxLkgsIHkgPSBCTDMuSCksIHN1YnNldCA9ICJzaW5nbGV0IikgKyAKICAgIGdlb21faGV4KGJpbnMgPSAxMjgpICsgCiAgICBnZW9tX2dhdGUoaW50ZXIuZ2F0ZSkgKyAKICAgIGdlb21fc3RhdHMobG9jYXRpb24gPSAiZGF0YSIsICBhZGp1c3QgPSBjKDAuMSwgMC44KSwgZGlnaXRzID0gMikgKyAKICAgIGxhYnModGl0bGUgPSBwYXN0ZTAoIkRhdGU6ICIsIGRhdGUpKSArCiAgICBmYWNldF9ncmlkKER5ZSB+IFRyZWF0bWVudCkgKwogICAgc2NhbGVfeF9sb2dpY2xlKCkgKyBzY2FsZV95X2xvZ2ljbGUoKSArIAogICAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMSksIGNvbG9yID0gInN0ZWVsYmx1ZSIsIGZhY2UgPSAyKSkKICBwcmludChwKQp9CmBgYAoKCkFkZCB0aGlzIGdhdGUgdG8gdGhlIGdhdGluZ1NldAoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KZ3NfcG9wX2FkZChncywgaW50ZXIuZ2F0ZSwgcGFyZW50ID0gInNpbmdsZXQiLCBuYW1lID0gImludGVybWVkaWF0ZSIpCnJlY29tcHV0ZShncykKYGBgCgojIyBEZWFkID0gSGlnaCByZWQgbG93IGdyZWVuCldlIGRvbid0IG5lZWQgdG8gc2V0IHRoZSBkZWFkIGdhdGUgYmVjYXVzZSBhbGwgd2Ugd2FudCBpcyB0aGUgcGVyY2VudCBvZiBldmVudHMgaW4gdGhhdCBnYXRlLCBub3QgdGhlIE1GSSBmb3IgZWl0aGVyIGNoYW5uZWwuIFRoZSBwZXJjZW50YWdlIGNhbiBiZSBjYWxjdWxhdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBwZXJjZW50IG9mIGV2ZW50cyBpbiB0aGUgcHJldmlvdXMgdHdvIGdhdGVzIGZyb20gMTAwJS4KCiMjIFJlcHJvZHVjaWJpbGl0eQpIZXJlLCB3ZSBwbG90IHRoZSBQSSBmaXJzdCBzdGFpbmluZyBmcm9tIG11bHRpcGxlIGRheXMgdG8gc2VlIHRoZWlyIGNvbnNpc3RlbmN5CmBgYHtyfQp0cmVhdG1lbnQgPC0gYygiMCIgPSAibW9jayIsICIxMCIgPSAiMTAgbU0iLCAiMTAwIiA9ICIxMDAgbU0iLCAiMTAwMCIgPSAiMSBNIikKcCA8LSBnZ2N5dG8oZ3NbcERhdGEoZ3MpJER5ZSA9PSAiUEkgZmlyc3QiICYgcERhdGEoZ3MpJFRyZWF0bWVudCAhPSAwICYgcERhdGEoZ3MpJERhdGUgIT0gIjAxMTYyNCJdLCAKICAgICAgICAgICAgYWVzKHggPSBCTDEuSCwgeSA9IEJMMy5IKSwgc3Vic2V0ID0gInNpbmdsZXQiKSArIAogIGdlb21faGV4KGJpbnMgPSAxMjgpICsgCiAgZmFjZXRfZ3JpZChEYXRlIH4gVHJlYXRtZW50LCBsYWJlbGxlciA9IGxhYmVsbGVyKFRyZWF0bWVudCA9IHRyZWF0bWVudCkpICsKICBzY2FsZV94X2xvZ2ljbGUoYnJlYWtzID0gYygxMF4yLCAxMF4zLCAxMF40KSkgKyAKICBzY2FsZV95X2xvZ2ljbGUoYnJlYWtzID0gYygxMF4yLCAxMF4zLCAxMF40KSkgKyAKICB0aGVtZV9taW5pbWFsKGJhc2Vfc2l6ZSA9IDE2KSArIAogIHBhbmVsX2JvcmRlcihjb2xvciA9ICJncmF5MjAiKSArICNiYWNrZ3JvdW5kX2dyaWQobWFqb3IgPSAibm9uZSIsIG1pbm9yID0gIm5vbmUiKSArCiAgdGhlbWUoCiAgICAjYXhpcy5saW5lID0gZWxlbWVudF9ibGFuaygpLAogICAgc3RyaXAudGV4dC55ID0gZWxlbWVudF9ibGFuaygpLAogICAgc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS4yKSwgY29sb3IgPSAic3RlZWxibHVlIiwgZmFjZSA9IDIpLAogICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMC42KSksCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF9ibGFuaygpLAogICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKQogICkKcApnZ3NhdmUoIi4uL291dHB1dC8yMDI0MDMyMy1mb3ItUjM1LWZ1bmdhbGlnaHQtcmVwcm9kdWNpYmlsaXR5LnBuZyIsIHdpZHRoID0gNCwgaGVpZ2h0ID0gMykKYGBgCgojIEV4cG9ydGVkIGdhdGUgc3RhdHMKCiUgb2YgZXZlbnRzIGluIGVhY2ggb2YgdGhlIHRocmVlIGdhdGVzCmBgYHtyfQpnYXRlZF9zdGF0cyA8LSBnc19wb3BfZ2V0X3N0YXRzKGdzLCB0eXBlID0gImNvdW50IikgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBtdXRhdGUocG9wID0gZ3N1YigiLiovIiwgIiIsIHBvcCksIHBvcCA9IGdzdWIoIi1vdXRsaWVyIiwgImNlbGxzIiwgcG9wKSkgJT4lIAogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBwb3AsIG5hbWVzX3ByZWZpeCA9ICJuXyIsIHZhbHVlc19mcm9tID0gY291bnQpICU+JSAKICBtdXRhdGUoCiAgICAjcF9zaW5nbGV0ID0gbl9zaW5nbGV0IC8gbl9jZWxscywKICAgIHBfbGl2ZSA9IG5fbGl2ZSAvIG5fc2luZ2xldCwKICAgIHBfaW50ZXJtZWRpYXRlID0gbl9pbnRlcm1lZGlhdGUgLyBuX3NpbmdsZXQsCiAgICBwX2RlYWQgPSAxIC0gcF9saXZlIC0gcF9pbnRlcm1lZGlhdGUKICApCiN3cml0ZV90c3YoZ2F0ZWRfZGF0YSwgZmlsZSA9ICIuLi9JbnB1dC8yMDI0MDEyNC1maWctMi1EeWUtT3JkZXItZ2F0ZWQtaHQudHN2IikKI3ByaW50KGdhdGVkX2RhdGEpCmBgYAoKTUZJIGluIHRoZSBsaXZlIGFuZCBpbnRlcm1lZGlhdGUgZ2F0ZXMKYGBge3J9CnBvcE1GSSA8LSBnc19wb3BfZ2V0X3N0YXRzKGdzLCBub2RlcyA9IGMoImxpdmUiLCAiaW50ZXJtZWRpYXRlIiksIHR5cGUgPSBwb3AuTUZJKSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIHNlbGVjdChzYW1wbGUsIHBvcCwgRlNDID0gYEZTQy1IYCwgQkwxID0gYEZ1bmdhbGlnaHQgR3JlZW4tSGApICU+JSAKICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gcG9wLCB2YWx1ZXNfZnJvbSA9IGMoRlNDLCBCTDEpKQpgYGAKCkNvbWJpbmUgdGhlIGRhdGEgYW5kIG1ldGEgZGF0YQpgYGB7cn0KZmluYWwgPC0gc2VsZWN0KHBEYXRhKGRhdCksIHNhbXBsZSA9IG5hbWUsIGV2ZXJ5dGhpbmcoKSkgJT4lIAogIGxlZnRfam9pbihzZWxlY3QoZ2F0ZWRfc3RhdHMsIC1zdGFydHNfd2l0aCgibl8iKSksICBieSA9ICJzYW1wbGUiKSAlPiUgCiAgbGVmdF9qb2luKHBvcE1GSSwgYnkgPSAic2FtcGxlIikKCndyaXRlX3RzdihmaW5hbCwgZmlsZSA9ICIuLi9kYXRhLzEyLjAxLWdhdGVkLW91dHB1dC0yMDI0MDExNy50c3YiKQpwcmludChmaW5hbCAlPiUgc2VsZWN0KC1zYW1wbGUpKQpgYGAKCgojIEV4cGxvcmF0b3J5IGNvbXBhcmlzb24gYmV0d2VlbiBQSSBhbG9uZSBhbmQgY29tYm8KClBJIGFsb25lCmBgYHtyfQpwMSA8LSBmaW5hbCAlPiUgCiAgZHBseXI6OmZpbHRlcihEeWUgPT0gIlBJIGFsb25lIikgJT4lIAogIGdncGxvdChhZXMoeCA9IFRyZWF0bWVudCwgeSA9IDEtcF9saXZlKSkgKyAKICBnZW9tX3BvaW50KHNpemUgPSAyLCBzaGFwZSA9IDIxLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjA1KSkgKyAKICAjc3RhdF9zdW1tYXJ5KGZ1biA9ICJtZWFuIiwgZ2VvbSA9ICJwb2ludCIsIGNvbG9yID0gInJlZCIpICsKICBsYWJzKHggPSBicXVvdGUoSFsyXSpPWzJdfihtTSkpLCB5ID0gIjEgLSAlTGl2ZSIpICsKICB0aGVtZV9jb3dwbG90KCkKCmluc2V0IDwtIGZpbmFsICU+JSAKICBkcGx5cjo6ZmlsdGVyKER5ZSA9PSAiUEkgYWxvbmUiLCBUcmVhdG1lbnQgIT0gIjEwMDAiKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gVHJlYXRtZW50LCB5ID0gMS1wX2xpdmUpKSArIAogIGdlb21fYmFyKHN0YXQgPSAic3VtbWFyeSIsIGZ1biA9ICJtZWFuIiwgZmlsbCA9ICJza3libHVlMiIsIGFscGhhID0gMC43KSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4wNSkpICsgCiAgI3N0YXRfc3VtbWFyeShmdW4gPSAibWVhbiIsIGdlb20gPSAicG9pbnQiLCBzaXplID0gMTUsIHNoYXBlID0gIi0iLCBjb2xvciA9ICJyZWQiKSArCiAgbGFicyh4ID0gYnF1b3RlKEhbMl0qT1syXX4obU0pKSwgeSA9ICIxIC0gJUxpdmUiKSArCiAgdGhlbWVfbWluaW1hbF9oZ3JpZCgxMSkKCmdnZHJhdyhwMSArIGxhYnMoc3VidGl0bGUgPSAiUEkgYWxvbmUsIGRvZXNuJ3QgZGlzZ3Vpc2ggMTAgdnMgMTAwIG1NIikpICsgCiAgZHJhd19wbG90KGluc2V0LCAuMiwgLjgsIC40LCAuNSwgdmp1c3QgPSAxKSArCiAgZHJhd19wbG90X2xhYmVsKGMoIkEiLCAiQiIpLCBjKDAsIDAuMTgpLCBjKDEsIDAuODUpKQoKZ2dzYXZlKCIuLi9vdXRwdXQvMTIuMDEtUEktYWxvbmUtb25lLW1pbnVzLXBlcmMtbGl2ZS5wbmciLCB3aWR0aCA9IDUsIGhlaWdodCA9IDQpCmBgYAoKUEkrU1lUTzkKYGBge3J9CnAyIDwtIGZpbmFsICU+JSAKICBkcGx5cjo6ZmlsdGVyKER5ZSAhPSAiUEkgYWxvbmUiLCBUcmVhdG1lbnQgIT0gIjAiKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gVHJlYXRtZW50LCB5ID0gMS1wX2xpdmUpKSArIAogIGdlb21fYmFyKHN0YXQgPSAic3VtbWFyeSIsIGZ1biA9ICJtZWFuIiwgZmlsbCA9ICJncmF5IiwgYWxwaGEgPSAwLjcpICsKICBnZW9tX3BvaW50KHNpemUgPSAyLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjA1KSkgKyAKICAjc3RhdF9zdW1tYXJ5KGZ1biA9ICJtZWFuIiwgZ2VvbSA9ICJwb2ludCIsIHNoYXBlID0gIi0iLCAKICAjICAgICAgICAgICAgIHNpemUgPSAxNSwgY29sb3IgPSAicmVkIiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4yKSkgKwogIGxhYnMoeCA9IGJxdW90ZShIWzJdKk9bMl1+KG1NKSksIHkgPSAiMSAtICVMaXZlIikgKwogIGZhY2V0X3dyYXAofkR5ZSkgKwogIHRoZW1lX2Nvd3Bsb3QoKSArCiAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMiksIGZhY2UgPSAyKSwKICAgICAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpKQoKcDIKZ2dzYXZlKCIuLi9vdXRwdXQvMTIuMDEtUEkrU1lUTzktb25lLW1pbnVzLXBsaXZlLnBuZyIpCmBgYAo+IFBsb3QgJSBEZWFkIGFuZCBDb21wYXJlCgpgYGB7cn0KcGYxZyA8LSBnYXRlZF9kYXRhICU+JQogIGRwbHlyOjpmaWx0ZXIoIShEeWUgJWluJSBjKCJQSSIpKSkgJT4lIAogIGRwbHlyOjpmaWx0ZXIoIShUcmVhdG1lbnQgJWluJSBjKCIxMDAwIG1NIikpKSAgJT4lCiAgI211dGF0ZShEaWx1dGlvbiA9IGZhY3RvcihEaWx1dGlvbiwgbGV2ZWxzID0gYygiMjUwIHgiLCAiNTAwIHgiLCAiMTAwMCB4IiwgIjIwMDAgeCIpKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gVHJlYXRtZW50LCB5ID0gcGVyY2VudF9MaXZlKSkgKwogIGZhY2V0X3dyYXAofiBEeWUsIHNjYWxlID0gImZyZWVfeSIpICsKICBnZW9tX2JveHBsb3QoKSArCiAgZ2VvbV9wb2ludChzdHJva2UgPSAxLCBzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yKSkgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICB0aGVtZV9taW5pbWFsKCkKcGYxZyArCiAgbGFicyh4ID0gIkh5ZHJvZ2VuIFBlcm94aWRlIFRyZWF0bWVudCBDb25jZW50cmF0aW9uIiwgeSA9ICJHYXRlZCBMaXZlIENlbGxzIikgKwogIHBhbmVsX2JvcmRlcihjb2xvciA9ICJibGFjayIsIHNpemUgPSAxLjUpICsKICB0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIsIGNvbG9yID0gImJsYWNrIiksICAjIEFkanVzdCBzaXplIGFuZCBmYWNlIChib2xkKQogICAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiwgZmFjZSA9ICJib2xkIiwgY29sb3IgPSAiYmxhY2siKSwKICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKQogICAgICAgICkrIAogIHRoZW1lKHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBmYWNlID0gImJvbGQiKSkgCiNnZ3NhdmUoIi4uL291dHB1dC8yMDI0MDEwNC1QSS1EaWx1dGlvbnMtR2F0ZWRfUlAtUGxvdC5wbmciLCB3aWR0aCA9IDcsIGhlaWdodCA9IDUpCmBgYA==